#ifndef __BSP_UART_H__
#define __BSP_UART_H__

#include "gd32f4xx.h"
#include "stdio.h"
//串口0的宏定义
#define COM_UART0                         USART0
#define COM_UART0_IRQn                    USART0_IRQn
#define COM_UART0_CLK                     RCU_USART0
#define COM_UART0_TX_GPIO_CLK             RCU_GPIOA
#define COM_UART0_TX_GPIO_AF              GPIO_AF_7
#define COM_UART0_TX_PORT                 GPIOA
#define COM_UART0_TX_PIN                  GPIO_PIN_9
#define COM_UART0_RX_GPIO_CLK             RCU_GPIOA
#define COM_UART0_RX_GPIO_AF              GPIO_AF_7
#define COM_UART0_RX_PORT                 GPIOA
#define COM_UART0_RX_PIN                  GPIO_PIN_10
#define COM_UART0_BAUD                    115200U

//串口1的宏定义
#define COM_UART1                         USART1
#define COM_UART1_IRQn                    USART1_IRQn
#define COM_UART1_CLK                     RCU_USART1
#define COM_UART1_TX_GPIO_CLK             RCU_GPIOA
#define COM_UART1_TX_GPIO_AF              GPIO_AF_7
#define COM_UART1_TX_PORT                 GPIOD
#define COM_UART1_TX_PIN                  GPIO_PIN_5
#define COM_UART1_RX_GPIO_CLK             RCU_GPIOD
#define COM_UART1_RX_GPIO_AF              GPIO_AF_7
#define COM_UART1_RX_PORT                 GPIOD
#define COM_UART1_RX_PIN                  GPIO_PIN_6
#define COM_UART1_BAUD                    115200U

//串口2的宏定义
#define COM_UART2                         USART2
#define COM_UART2_IRQn                    USART2_IRQn
#define COM_UART2_CLK                     RCU_USART2
#define COM_UART2_TX_GPIO_CLK             RCU_GPIOB
#define COM_UART2_TX_GPIO_AF              GPIO_AF_7
#define COM_UART2_TX_PORT                 GPIOB
#define COM_UART2_TX_PIN                  GPIO_PIN_10
#define COM_UART2_RX_GPIO_CLK             RCU_GPIOA
#define COM_UART2_RX_GPIO_AF              GPIO_AF_7
#define COM_UART2_RX_PORT                 GPIOB
#define COM_UART2_RX_PIN                  GPIO_PIN_11
#define COM_UART2_BAUD                    115200U

#define BufferMaxLength 100  				    /* 缓冲区大小 */

extern uint8_t Receive_Buff[BufferMaxLength];   /* 接收数据缓冲区 */
extern uint8_t Transmit_Buff[BufferMaxLength];  /* 发送数据缓冲区 */
extern uint32_t Data_Length;  					/* 数据长度 */
extern uint8_t Receive_Ok;                      /* 接收数据完成标志位 */
extern uint8_t Send_Ok;		                    /* 发送数据完成标志位 */

void bsp_uart_periph_init(void);
void my_dma_init_USART_Rx(void);
void my_dma_init_USART_Tx(void);
void usart_tx_data_dma(uint8_t* data_buff, uint8_t length);


#endif /* __BSP_UART_H__ */
